home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / games / dcg408up.zip / WHATSNEW.TXT < prev   
Text File  |  1997-03-05  |  19KB  |  509 lines

  1. 4.08 changes 
  2.  
  3. Dated March 3, 1997
  4.  
  5. 1. Added VOLUME( L, R ); to set the left and right volume
  6.    for Sound Blaster Pro or higher. Default is 12. See the
  7.    CONTROL script where <ALT>-V is handled for an example.
  8.  
  9. 2. Fixed the script to move items from one player to another.
  10.    It turns out that SELECT( player.bp ) returned the index
  11.    of the item on the select list, instead of the index of
  12.    the selected item in the back pack. In most cases this is
  13.    the same value, but since a backpack can have empty slots,
  14.    and those slots are NOT shown in the select list, the
  15.    answer was not always the same. This applies also to the
  16.    case 'select( player.body )', which shows the worn items
  17.    and let's you select one of them.
  18.  
  19.    The obvious fix was to change:
  20.  
  21.      L3 = select( player.bp );
  22.  
  23.    to:
  24.   
  25.      L3 = select( player.bp );
  26.      L3 = player.bp.index;      ! or L3 = curritem.index
  27.  
  28.    but it failed because player.bp.index and curritem.index
  29.    were broken also. However, player.bp by itself returns 
  30.    the index in numeric assignments, so this worked:
  31.  
  32.      L3 = select( player.bp );
  33.      L3 = player.bp;
  34.  
  35.    I decided to go ahead and fix the SELECT() call to return
  36.    the index of the selected item instead of the index into
  37.    the list so, so that after the L3 = select( player.bp ) 
  38.    statement, the values of L3, player.bp, player.bp.index
  39.    and curritem.index are all the same.
  40.  
  41. 3. The foreach OBJECT loop was broken. It would loop only over
  42.    VISIBLE objects, even when you didn't specify VISIBLE. Note
  43.    that foreach NPC was working properly.
  44.  
  45. 4. The RANDOM() routine wasn't properly initialized and returned
  46.    the same random sequence all the time. This isn't quite what
  47.    was happening, but it should work all the time now.
  48.  
  49. 5. I incorporated the code into the CONTROL script that I had
  50.    given to lost-dragon for stacked objects when moving. That
  51.    way, if you have a table (furniture/thing) with some food 
  52.    on top, you still can't walk over it. The old script allowed
  53.    you to walk over it because it saw only the FOOD, not the
  54.    furniture under it.
  55.  
  56. Dated February, 1997
  57.  
  58. 1. Mode VH2 was added back in. The files in VH2FILES.ZIP
  59.    should be expanded if you wish to use this mode.
  60.  
  61. 2. Mode VH3 is now supported, but the template files
  62.    (DCxxxVH3.PCX) are not provided. These templates will
  63.    be provided in a later upgrade.
  64.  
  65. 3. The VHU mode tiles (added in 4.07) can now be used in
  66.    the original 640x480x256 mode (VHU) as well as in the
  67.    new modes VHV (800x600x256) and VHW (1024x768x256). 
  68.    Only the TEMPLATES are needed (files DCxxxVHV.PCX and
  69.    DCxxxVHW.PCX). The VHU tiles are used for all 3 modes.
  70.    
  71. 4. The volume setting for voice and music was fixed. In
  72.    a future release I will introduce volume controls to
  73.    the script language.
  74.  
  75. 5. By default, MIDI files are assumed to follow Rolands
  76.    MT32 instrument standard. However, if the file DCMUSIC.IBK
  77.    is found at startup time, the instrument bank in that
  78.    file will be used to play MIDI files instead. DCGAMES
  79.    supplies 2 instrument banks (MT32.IBK containing the
  80.    Roland MT32 standard instruments and GMIDI.IBK containing
  81.    the General MIDI standard instruments). You should copy
  82.    one or the other files to DCMUSIC.IBK as needed.
  83.  
  84. 6. In addition to startup DCMUSIC.IBK, the new script command
  85.    LOADIBK() can be used to load a instrument bank at any
  86.    point in time during game play. The instrument bank remains
  87.    loaded until another LOADIBK() is issued.
  88.  
  89.    Example:   LOADIBK( "GMIDI.IBK" );
  90.  
  91. 7. New parameter -v tells the game driver to use VESA compatible
  92.    graphics modes instead of direct chipset access. Use -v if
  93.    you think you are having graphics board related problems.
  94.  
  95. 8. The number of character tiles (in DCPEOPLE.VHx) and object
  96.    tiles (in DCOBJECT.VHx) was raised to 1024. The previous
  97.    limit was 512.
  98.  
  99. 9. The new WAITCK() script command will wait for a specified
  100.    number of CLOCK TICKS (there are roughly 18 ticks in a
  101.    second). WAITCK() is similar to WAIT() in that it waits for
  102.    the specified amount of time OR till music stops playing.
  103.  
  104. 10.The new TIMECK() script command will wait for a specified
  105.    number of clock ticks regardless of whether music is playing.
  106.  
  107. 11. The new function TIMER will return the number of clock ticks
  108.     since midnight. It can be used when you don't want to WAIT()
  109.     for a specified amount of time, but you want to be able to 
  110.     check a bit later to make sure at least a specified amount
  111.     of time has gone by.
  112.  
  113. 12. The mouse is no longer required. If you don't have one
  114.     the game driver will let you continue on.
  115.  
  116. 13. The HELP in the game driver was moved from WRITE/WRITELN to
  117.     a pop-up window.
  118.  
  119. 14. The new function P_DOTEXT() was introduced. It works exactly
  120.     like DOTEXT() but the text strings are displayed inside the
  121.     current frame (as set by SET_FRAME()).
  122.  
  123. 15. The SET_FRAME() routine will now store the image under the
  124.     frame and restore it when the text functions (PWRITE/PWRITELN
  125.     and P_DOTEXT) cause it to scroll. 
  126.  
  127. 16. The VIEWPCX, VIEWGIF and VIEWFLI functions will now NOT set
  128.     use the palette inside the file, instead displaying the image
  129.     using the current game driver's palette. However, if you want
  130.     to use the picture's palette, use the new parameter:
  131.  
  132.        VIEWPCX( "filename.pcx", PALETTE );
  133.  
  134. 17. The VIEWPCX, VIEWGIF and VIEWFLI functions can now display 
  135.     their image centered inside the current FRAME as defined by
  136.     the last SET_FRAME() command. This allows you to display images
  137.     on top of other images or even anywhere on the screen.
  138.  
  139.        VIEWPCX( FRAME, "filename.pcx" );
  140.  
  141.     See the script file JIMMY.SCR for an example, and to see it
  142.     working go talk to Jimmy in the example game.
  143.  
  144. 18. The files ANYFRAME.PCX and ANYCONV.PCX were added to be used
  145.     in conversations. Again, see the JIMMY.SCR example.
  146.  
  147. 4.07 changes
  148.  
  149. 1. A new mode called VHU that is 640x480x256 (same as
  150.    VH1) but the tiles are 48x48 in size (much bigger 
  151.    and square).  This mode will evolve into a variable
  152.    tile size mode for 5.x, with tiles 24x24, 48x48 and
  153.    72x72 in size.  Note that this mode is in ALPHA
  154.    so you shouldn't use it. The tile files for VHU are
  155.    quite large (4MB total vs 1.5MB in VH1 for example)
  156.    and that doesn't include the animation tiles. When
  157.    I add animation, every character will support up
  158.    to 20 frames in VHU mode. This will make these files
  159.    HUGE. The format for VHU will probably by incompatible
  160.    with the format for the rest of the modes.
  161.  
  162. 2. The ability to play "full screen" (the menu/stats 
  163.    part on the right side disappears).  You can control
  164.    it using: PAINT(SMALL); or PAINT(LARGE); in the 
  165.    scripts. You can use the SPLIT function to find out
  166.    if the screen is currently in SPLIT (SMALL) mode.
  167.  
  168. 3. The ability to "transfer" to another world immediatly,
  169.    rather than having to wait until the script finishes
  170.    execution. 
  171.  
  172.      teleport( IMMEDIATE, dest-world, dest-door|x,y );
  173.  
  174. 4. Removed the text box at the bottom and replaced it 
  175.    with a "control" bar. This bar includes a smaller 
  176.    text area, a player's statistics and and the icon 
  177.    bar. I'm still playing around with the exact size of
  178.    the text area and the stats.
  179.  
  180. 5. Fixed text wraping for all text outputs, such as 
  181.    WRITE/WRITELN (in the text box), PWRITE/PWRITELN 
  182.    (in a PCX picture) and MSGBOX() (see below).
  183.  
  184. 6. Added the ability to display a windows like box
  185.    with up to 3 buttons, like:
  186.  
  187.     ! Display a box with 2 buttons labeled Yes and No..
  188.     L0 = msgbox( QUESTION, 2,"Yes","No","Are you sure?" );
  189.  
  190. 7. Changed the stats/menu boxes to much nicer boxes with
  191.    edges and other nice features. The stats/menu boxes are
  192.    stored in PCX images, and while you can modify them, 
  193.    you should not alter their size, nor the title space
  194.    or the ICON bar at the bottom of each one.
  195.  
  196. 8. INITPLAY.SCR now runs every time you start playing. It
  197.    is like the INITGAME script, but it runs every time, 
  198.    not just at the begining of the game.  You can use it
  199.    to set the palette, choose the type of interface 
  200.    (large/small), etc., etc.
  201.  
  202. 9. STOPPLAY.SCR new runs every time you stop playing. It 
  203.    will display a DCGAMES "shareware" image, but you can
  204.    remove that code and put your own. This allows you to
  205.    do all kinds of house keeping before the game engine 
  206.    quits.
  207.  
  208. 10. There is a new "format" for the tile files (*.VHI,
  209.     *.VH1, etc.) that uses about 1/2 the current size.
  210.     A conversion program is included so no problem. If
  211.     you have your own tiles, just run "DCCNVT5G.EXE".
  212.  
  213. 11. The SELECT() command now displays a pop-up box 
  214.     instead of using the statistics area. This allows
  215.     you to do work in full screen mode w/out having to
  216.     switch to small screen mode just to have a menu
  217.     based interaction with an NPC. The pop-up box is 
  218.     stored in DCLSTVHx.PCX (short) and DCLS2VHx.PCX
  219.     (long).  If the available options exceed the space
  220.     available in the long form, multiple pages are
  221.     used (with a PgUp/PgDn notice at the bottom of the
  222.     list.
  223.  
  224. 12. Included templates MSGBOX(), SELECT() and the 
  225.     statistics/menu area for VHI, VH1 and VHU mode.
  226.     Other modes are not supported.  The only other
  227.     mode I will support is VH2 (800x600) if I get 
  228.     lot's of e-mail from people that absolutely 
  229.     have to have it. Anything else (VLO, VH3, etc.)
  230.     is out.
  231.  
  232. 13. The MOVE and COPY commands have been extended to
  233.     allow moves/copies to different members of the
  234.     party. The M)ove command is implemented in the
  235.     CONTROL script rougly as follows:
  236.  
  237.       Ln = SELECT( player.bp ); ! Select an ITEM 
  238.       Lm = SELECT( group );     ! Select destination
  239.       MOVE( player.bp, player(Lm) ); ! Move it
  240.  
  241. 14. The READTEXT() command will now display text blocks
  242.     inside the PCX image provided in DCTXTVHx.PCX. If it
  243.     is not found, the text is still displayed in the text
  244.     area (backwards compatible), but the text area is way
  245.     too small to display full blocks of text.
  246.  
  247.     You can also use SET_FRAME() and VIEWPCX/GIF() to 
  248.     put an image on the screen, then call READTEXT() with
  249.     a second parameter of -1, to indicate that the image
  250.     and frame are already set, so DCTXTVHx.PCX is not used.
  251.  
  252. 15. Extended the STATS() command to include the following:
  253.  
  254.       stats( group  ); ! Show group statistics
  255.       stats( player ); ! Show current player statistic
  256.       stats( player.bp   ); ! Show current player's backpack
  257.       stats( player.body ); ! Show current player's worn items
  258.       stats( NEXT | PREV ); ! Show next (or previous) player's info
  259.  
  260.    You can also show NPC stats, backpack and body, but that feature
  261.    is under development. It might not work just right just yet.
  262.  
  263.    You can still use STATS( <numeric expression> );, which will 
  264.    display the statistics for the given player in the group, and
  265.    using STATS; (no parameter) will just re-fresh the stats area.
  266.  
  267.    Note that stats() does NOT switch to SMALL mode, but it does 
  268.    "remember" what you last specified, so you can do this:
  269.  
  270.       Ln = SPLIT;         ! Remember
  271.       stats( player.bp ); ! Show inventory
  272.       paint( small );     ! SMALL mode (does nothing if already small)
  273.       <do stuff>
  274.       if not Ln then paint( large ); endif; ! Restore Large Mode 
  275.   
  276. Other enhancements and bug fixes in 4.07
  277.  
  278. a) After a LOCATE, check npc.x/npc.y against pointx/pointy
  279.    to make sure you found an NPC.
  280.  
  281. b) Check to make sure there is land nearby before you can
  282.    exit a boat.
  283.  
  284. c) Allow boarding a boat from diagonal directions.
  285.  
  286. d) In battle, you could reference the invisible NPCs (that
  287.    disapear when the fight starts). You could also "fight"
  288.    with objects. These bugs have been fixed.
  289.  
  290. e) The VIEWPCX() function has been extended. If the picture
  291.    you want to display has the wrong number of colors (16 in
  292.    256 color mode or 256 in 16 color mode), a slower routine
  293.    is used to display the PCX. The 256 colors are "mapped" to
  294.    the closest of the 16 colors.
  295.  
  296. f) The ENDGAME routine was broken when invoked in the WORLDDEF
  297.    script. It worked in other scripts.
  298.  
  299. g) The code to stop an entry in WORLDDEF/@GET (using STOP instead
  300.    of CONTINUE) was not working. This was fixed.
  301.  
  302. 4.06 changes
  303.  
  304. I think there was a bug in the text handling that
  305. had to do with scrolling. I released this one just
  306. a few days after 4.05 because of that bug, but I 
  307. can't remember what it was.
  308.  
  309. 4.05 changes
  310.  
  311. DCPLAY.EXE will now look for file DCFNTVHI.FGF
  312. which is the font file to be used in the game.
  313. The file is in FastGraf Font format (FGF). For
  314. low resolutions (VLO) games, it will use the
  315. old ugly font which is stored as DCFNTVLO.FGF.
  316.  
  317. Other enhancements and fixes include:
  318.  
  319. a) Moved code that divides follower statistics
  320.    by half from the game driver to the script
  321.    FIGHTING/@0, so you now have control over
  322.    the follower's stats.
  323.  
  324. b) Instead of playing "Win" automatically when
  325.    you win a battle, it calls FIGHTING/@2 (new
  326.    entry point) so now you control what happens
  327.    when you kill all the monsters.
  328.  
  329. c) When using "foreach npc|object do", if you 
  330.    change the current npc/object's location
  331.    inside the loop, sometimes you got funny
  332.    behaviour (the loop wouldn't visit every
  333.    npc or object, or it might visit the same
  334.    one twice).
  335.  
  336. d) When you use FIGHT(STOP);, the script will
  337.    NO-LONGER-STOP. This means you can add more
  338.    script code to handle running away, etc.
  339.    To get the old behaviour, just add a STOP;
  340.    right after the FIGHT(STOP) in your scripts.
  341.  
  342.    Note that FIGHT; by itself (starting a fight)
  343.    still stop the script. Once you start a fight
  344.    a separate sequence is used.
  345.  
  346. e) Fixed a bug in POS(). It now correctly finds
  347.    the first occurance of a character in a string.
  348.  
  349. 4.04 changes:
  350.  
  351. Fixed minor bug in 4.03 (pause,beep,pause) in
  352. sound board detection routine.
  353.  
  354. New entrypoint into CONTROL.SCR handles NPC
  355. animation (@5) when not fighting. It is called
  356. once per turn (after the player's move).
  357.  
  358. NOTE: NOTE: NOTE: NPCs are no longer animated
  359. by the game driver. If you have modified the
  360. CONTROL script you MUST add the @5 entrypoint
  361. and implement NPC animation for hostile monsters
  362. or they will stop moving.
  363.  
  364. Includes new version of WORXLITE, PLAY.BAT and
  365. the TSR.COM utility to allow help install/remove
  366. the sound blaster driver. TSR.COM didn't properly
  367. detach the accelerated clock interrupt, so time
  368. went REALLY FAAAAAST after you played DCGAMES,
  369. make sure you install the new PLAY.BAT!
  370.  
  371. New features include SWRITE/SWRITELN, a version
  372. of WRITE/WRITELN that sends it's output to a 
  373. string variable instead of the screen:
  374.  
  375.   object.name = SWRITELN( player.name, "'s book" );
  376.  
  377. Another new feature is PWRITE/PWRITELN, a version
  378. of WRITE/WRITELN that writes into a displayed PCX
  379. image. The SETFRAME command (new) defines the margins
  380. within the PCX image.
  381.  
  382.   ! SETFRAME( picture, xof,yof,xof,yof,color );
  383.   SETFRAME( "BOOK1.PCX", 30, 30, 30, 30, 1 );
  384.   VIEWPCX ( "BOOK1.PCX" );
  385.   PWRITELN( "Title: ", object.name );
  386.   PWRITELN( "Once upon a time.." );
  387.   pause;
  388.   paint( window );
  389.  
  390. Two new functions will tell if you can SEE or
  391. REACH (with your current mode of transportation)
  392. from one spot to another.  The LOS (line of sight)
  393. and LOR (line of reach) functions, take 2 locations
  394. and a set of landscape transparency values (for LOS)
  395. or density values (for LOR).  For example:
  396.  
  397.    if LOS( npc, player ) then
  398.      ! The monster can see the player..
  399.    endif;
  400.  
  401.    if LOR( player, world.doorx(5), world.doory(5) ) then
  402.      writeln( "The door is within reach!" );
  403.    endif;
  404.  
  405. Full examples and function details can be found in
  406. ADDENDUM.TXT, an addendum to the 4.00 documentation.
  407.  
  408. See also the file TEST.SCR which is invoked in the
  409. game by pressing FKEY9. It tests LOS, LOR, SET_FRAME
  410. and PWRITE/PWRITELN.
  411.  
  412. 4.03 changes:
  413.  
  414. The file DCWORLD.EXE and DCPLAY.EXE are now
  415. protected mode versions of the DCGAMES system.
  416. They use the DOS4GW.EXE program (must be in 
  417. the same place as the executables). They will
  418. now use all available protected mode memory
  419. and are optimized for 386 processors, so they
  420. don't work on older processors.
  421.  
  422. Worlds may now be up to 512KB in size (up from
  423. 64KB). Compiled scripts (SCO files) can now be
  424. a lot larger, and a few other internal limits
  425. are also extended.
  426.  
  427. I also modified the script language to return
  428. the string values instead of numbers when the
  429. following variables are assigned to a string 
  430. or displayed using write/writeln:
  431.  
  432. a) world.density(x,y) <- Returns string from the
  433.    [WORLD DENSITIES] entry in DCCTOKEN.DAT
  434.  
  435. b) world.block(x,y) <- Returns string from the
  436.    NAME field of the Tile record in DCBLOCKn.mde
  437.    where n=0-9 and mde = VHI, VH1, etc.
  438.  
  439. I also fixed a bug in the code that allowed you
  440. to replace the landcaping file on the fly. It 
  441. was plain broken. Now you can have 2 sets of 
  442. landscaping tiles, one for darkness, one for
  443. daylight and switch like this:
  444.  
  445.     world.landcape = 1; ! Between 0 and 9 !
  446.  
  447. Finally, in order to make this protected mode
  448. I had to extract the sound library and make it
  449. into a TSR (because it's real-mode).  To run
  450. DCPLAY now you need a batch file that loads
  451. and removes the TSR.  See example file PLAY.BAT
  452.  
  453. This batch file marks memory (tsr i), loads the
  454. WORXLITE tsr program, runs DCPLAY and removes
  455. the WORXLITE tsr when DCPLAY ends.  Note that 
  456. if you usually use the -S parameter because you
  457. don't have a sound card, you can just run the
  458. dcplay.exe program directly w/out loading the
  459. worxlite program:
  460.  
  461.    dcplay.exe -s
  462.  
  463. 4.02 changes:
  464.  
  465. The utility 'LOADPAL.EXE' will load a NEOPAINT
  466. palette (file.PAL) into a DCGAMES palette 
  467. (file.DAT).  The default palette is DCPALET.DAT
  468. and is loaded at game startup.
  469.  
  470. Inside the scripts, you can use the LOADPAL() 
  471. function to load an alternate palette. This 
  472. function can be used to implement day/night
  473. as follows in the 'time' routine in CONTROL.SCR
  474.  
  475.    if <sunrise> then
  476.      loadpal( "DCPALET.DAT" );
  477.    else
  478.      loadpal( "NIGHTPAL.DAT" );
  479.    endif;
  480.  
  481. You can also change the palette when you enter
  482. a new world depending on the world type, for
  483. example:
  484.  
  485.    if world.type = CAVE then
  486.      loadpal( "CAVEPAL.DAT" );
  487.    elsif time > sunrise and time < sunset then
  488.      loadpal( "DCPALET.DAT" );
  489.    else
  490.      loadpal( "NIGHTPAL.DAT" );
  491.    endif;
  492.  
  493. I also fixed WORLD.INDEX to return a simple
  494. number (like it did in 3.x). I broke it trying
  495. to implement a variable that returns the STRING
  496. name of the world file.
  497.  
  498. If you want to get the name of the world file
  499. (w/out extension), use WORLD.SINDEX, which will
  500. return "WORLDnnn" where nnn = 000 to 999.
  501.  
  502. 4.01 changes:
  503.  
  504. Fixes a bug that causes the game driver to hang
  505. after a battle when using the -s parameter.
  506.  
  507. Also, contains minor patches to the CONTROL script
  508. to handle 3.01 style hidden and locked doors.
  509.